/**
 * Copyright(c) 2013 Jade Techonologies Co., Ltd.
 *
 * History:
 *   14-7-28 上午11:57 Created by dwzhang
 */
package com.jade.framework.base.comm;

import java.net.InetSocketAddress;
import java.util.Collection;

/**
 * 通信服务器端。
 *
 * @author dwzhang
 * @version 1.0 14-7-28 上午11:57
 */
public interface CommServer<Channel> extends CommEndpoint<Channel>
{
    /** 启动服务器端。 */
    public void start();

    /** 停止服务器端。 */
    public void stop();

    /**
     * 判断Server是否已经启动。
     *
     * @return 启动返回true;否则返回false.
     */
    public boolean isStarted();

    /**
     * 判断Server是否已经停止。
     *
     * @return 停止返回true;否则返回false.
     */
    public boolean isStopped();

    /**
     * 返回所有连接的Session.
     *
     * @return 连接Session列表。
     */
    public Collection<ProtocolSession> getSessions();

    /**
     * 根据远端地址获取指定的Session.
     *
     * @param address 远端地址。
     * @return 指定的连接Session.
     */
    public ProtocolSession getSession(InetSocketAddress address);
}
